class Solution {
    string ans = "";
    void findLongestSubstr(string &s, int left, int right)
    {
        // 下面就只是简单判断回文子串的逻辑
        while(left >= 0 && right <= s.size() - 1 && left <= right)
        {
            if(s[left] == s[right])
            {
                if(right - left + 1 > ans.size())
                    ans = s.substr(left, right - left + 1);
                left--;
                right++;
            }
            else break;
        }
    }

public:
    string longestPalindrome(string s) {
        // 双指针扩散法
        for(int i = 0; i < s.size(); i++)
        {
            // 奇数个的回文子串
            findLongestSubstr(s, i, i);
            // 偶数个的回文子串
            findLongestSubstr(s, i, i + 1);
        }
        return ans;
    }
};